package com.foreknow.demo9;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 已知 输入 J ="aA"     S = "aAAbbbbb"  输出：3
 *     输入 J = "z"     S = "ZZ"         输出：0
 *
 *     S和J最多可以有50个字符并且J中的字母是不可以重复的,J和S中所有的字符都是字母
 *
 * 已知 用户输入：
 *              7_This_is_a_test
 *              _hs_s_a_es
 *     输出： 7TI
 *
 */
public class ReadWrite {
    //对文件的写操作
    public void writeFile(List<Student> list) {
        try {
            //1. 创建BufferedWriter  FileWriter
            FileWriter fr = new FileWriter("student.txt");
            BufferedWriter bw = new BufferedWriter(fr);
            //2. 遍历List集合并获取到学生的信息
            for (int i = 0;i<list.size();i++){
                Student s = list.get(i);
                //3. 将获取到的学生信息拼成一个字符串写到目标文件中(student.txt)
                String str = s.getSid() + " " + s.getSname() + " " + s.getAge()+ " " + s.getSchool() + " " + s.getPhone();
                bw.write(str);//写数据
                bw.newLine();//换行
            }
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //对文件的读操作
    public List<Student> readFile(String fileName) {
        FileReader fr = null;
        List<Student> list = new ArrayList<>();
        try {
            //1. BufferedReader  FileReader
            fr = new FileReader(fileName);
            BufferedReader br = new BufferedReader(fr);
            //2. 每获取一行数据是一个字符串 10001 fender neu 121212122
            //     需要使用String工具类中的拆分方法split(" ") : String[]
            //     要将数组中的每个元素以Student对象来保存
            String str = null;
            while ((str=br.readLine()) != null) { //10001 fender neu 121212122
                String[] s = str.split(" ");
                Student stu = new Student();
                stu.setSid(Integer.parseInt(s[0]));
                stu.setSname(s[1]);
                stu.setAge(Integer.parseInt(s[2]));
                stu.setSchool(s[3]);
                stu.setPhone(s[4]);
                //3. 将学生对象保存到List集合中
                list.add(stu);
            }
            br.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return list;
    }
}
